package BookFrame;

class Book {
    // ---------------------- 基础信息 ----------------------
    private int bookId;          // 图书编号（唯一标识）
    private String title;        // 书名
    private String author;       // 作者
    private String publisher;    // 出版社
    private String publishDate;  // 出版日期
    private String category;     // 图书类别（如文学/科技/教育）

    // ---------------------- 库存与状态 ----------------------
    private int stock;           // 库存数量
    private String status;       // 图书状态（在架/借阅中/损坏/丢失）
    private String location;     // 存放位置（如A区3排5号）

    // ---------------------- 借阅信息 ----------------------
    private int borrowerId;      // 借阅者编号（未借出时为0或null）
    private String borrowDate;   // 借阅日期
    private String dueDate;      // 应还日期

    // ---------------------- 构造方法 ----------------------
    public Book() {
    }

    // 基础信息构造方法
    public Book(int bookId, String title, String author, String publisher) {
        this.bookId = bookId;
        this.title = title;
        this.author = author;
        this.publisher = publisher;
    }

    // ---------------------- Getter & Setter ----------------------
    // 基础信息
    public int getBookId() {
        return bookId;
    }

    public void setBookId(int bookId) {
        this.bookId = bookId;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getAuthor() {
        return author;
    }

    public void setAuthor(String author) {
        this.author = author;
    }

    public String getPublisher() {
        return publisher;
    }

    public void setPublisher(String publisher) {
        this.publisher = publisher;
    }

    public String getPublishDate() {
        return publishDate;
    }

    public void setPublishDate(String publishDate) {
        this.publishDate = publishDate;
    }

    public String getCategory() {
        return category;
    }

    public void setCategory(String category) {
        this.category = category;
    }

    // 库存与状态
    public int getStock() {
        return stock;
    }

    public void setStock(int stock) {
        this.stock = stock;
    }

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    public String getLocation() {
        return location;
    }

    public void setLocation(String location) {
        this.location = location;
    }

    // 借阅信息
    public int getBorrowerId() {
        return borrowerId;
    }

    public void setBorrowerId(int borrowerId) {
        this.borrowerId = borrowerId;
    }

    public String getBorrowDate() {
        return borrowDate;
    }

    public void setBorrowDate(String borrowDate) {
        this.borrowDate = borrowDate;
    }

    public String getDueDate() {
        return dueDate;
    }

    public void setDueDate(String dueDate) {
        this.dueDate = dueDate;
    }

    // ---------------------- 业务方法 ----------------------

    /**
     * 计算图书逾期天数（当前日期需外部传入或通过工具类获取）
     *
     * @param currentDate 当前日期（格式：yyyy-MM-dd）
     * @return 逾期天数（未逾期或未借出时返回0）
     */
    public int calculateOverdueDays(String currentDate) {
        if (status != "借阅中" || dueDate == null) {
            return 0;
        }
        // 此处可添加日期计算逻辑（如使用LocalDate.parse比较日期）
        return 0; // 示例返回值，需实际实现日期差计算
    }

    /**
     * 更新图书状态（借阅/归还/损坏等场景）
     *
     * @param newStatus 新状态（在架/借阅中/损坏/丢失）
     */
    public void updateStatus(String newStatus) {
        this.status = newStatus;
        // 状态变更时可自动更新库存（如借阅中时库存-1，归还时库存+1）
        if (newStatus.equals("借阅中")) {
            this.stock--;
        } else if (newStatus.equals("在架")) {
            this.stock++;
        }
    }
}
